package com.example.leetcode.trainingcamp.week3.Thursday;

import java.util.LinkedList;

/**
 * 请你仅使用两个队列实现一个后入先出（LIFO）的栈，并支持普通栈的全部四种操作（push、top、pop 和 empty）。
 *
 * <p>实现 MyStack 类：
 *
 * <p>void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的，返回
 * true ；否则，返回 false 。
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/implement-stack-using-queues
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class MyStack {

    private final LinkedList<Integer> queue;


    /** Initialize your data structure here. */
    public MyStack() {
        queue = new LinkedList<>();

    }

    /** Push element x onto stack. */
    public void push(int x) {
        queue.offer(x);
    }

    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        return queue.removeLast();
    }

    /** Get the top element. */
    public int top() {
        return queue.peekLast();
    }

    /** Returns whether the stack is empty. */
    public boolean empty() {
        return queue.isEmpty();
    }
}


class TestMyStack{
  public static void main(String[] args) {
    MyStack stack = new MyStack();
    stack.push(1);
    stack.push(2);
    System.out.println(stack.top());
    System.out.println(stack.pop());
    System.out.println(stack.empty());
  }
}